home *** CD-ROM | disk | FTP | other *** search
/ 3D Games - Real-time Rend…ng & Software Technology / 3D Games - Real-time Rendering & Software Technology.iso / flysdk / plugin / walk / walk.h < prev   
Encoding:
C/C++ Source or Header  |  2000-09-03  |  4.4 KB  |  233 lines

  1. #include "..\..\lib\Fly3D.h"
  2. #include "..\weapon\weapon.h"
  3.  
  4. #define FLYMP_MSG_POS 9180
  5. #define FLYMP_MSG_KILL 9181
  6. #define FLYMP_MSG_DAMAGE 9182
  7.  
  8. class person;
  9. class jump_pad;
  10. class birth_pad;
  11. class gib;
  12.  
  13. struct mp_data
  14. {
  15.     DWORD type,dpid,flag;
  16.     vector pos,vel,walkvel,X,Y,Z;
  17.     float rot;
  18. };
  19.  
  20. struct mp_data_damage
  21. {
  22.     DWORD type,dpid,from;
  23.     vector pushvec;
  24.     float value;
  25. };
  26.  
  27. struct mp_data_kill
  28. {
  29.     DWORD type,dpid,dpidpoints;
  30.     vector pos,hitpos;
  31.     int birthpad;
  32. };
  33.  
  34. enum 
  35. {
  36.     TYPE_PERSON=0x300,
  37.     TYPE_JUMP_PAD,
  38.     TYPE_BIRTH_PAD,
  39.     TYPE_GIB,
  40. };
  41.  
  42. class person : public bsp_object
  43. {
  44. public:
  45.     float height,gravity,rotvel,updownrot,mousespeed;
  46.     spot_light *spot;
  47.     int flag,points,player;
  48.     int jumpflag,jumpforcetime;
  49.     float jumpforce,walkvel;
  50.     vector jumpvec,walkvec;
  51.     local_system ls;
  52.     mesh *contactobj;
  53.     int contactfacenum;
  54.     shadow *personshadow;
  55.     int zoomtime;
  56.     float zoomangle1,zoomangle2;
  57.     float shield,curshield;
  58.     light_vertex dynlights;
  59.     vector dynlight;
  60.     
  61.     anim_mesh *p_anim[3];
  62.     anim_mesh *w_anim[3];
  63.     int skin,cur_anim,cur_anim_time,loop_anim;
  64.     gun *g;
  65.     gib *gb;
  66.     int ngib;
  67.     float gibforce;
  68.     birth_pad *bp;
  69.     int zoompos;
  70.  
  71.     person()
  72.     {
  73.         type=TYPE_PERSON;
  74.         contactobj=0;
  75.         flag=0;
  76.         player=0;
  77.         points=0;
  78.         cur_anim=0;
  79.         cur_anim_time=0;
  80.         loop_anim=1;
  81.         bp=0;
  82.         updownrot=0; 
  83.         jumpflag=0;
  84.         jumpvec.null();
  85.         walkvec.null();
  86.         zoompos=0;
  87.         dynlight.null();
  88.     }
  89.  
  90.     // virtual from bsp_object
  91.     void init();
  92.     int step(int dt);
  93.     void draw();
  94.     mesh *get_mesh() { return p_anim[cur_anim]; };
  95.     mesh *ray_intersect(vector& ro,vector& rd,vector& ip,float& dist,int &facenum,float rad);
  96.     int get_custom_param_desc(int i,param_desc *pd);
  97.     int message(vector& p,float rad,int msg,int param,void *data);
  98.  
  99.     // check keys and mouse
  100.     void do_input(int dt);
  101.     // send mp message pos
  102.     void mp_send_pos(int msgtype,int msgflag);
  103.     // send mp message kill
  104.     void mp_send_kill(int killer,int pad,vector& hitpoint);
  105.     // send mp message damage
  106.     void mp_send_damage(int from,vector& pushvec,float value);
  107.     // show gibs, give points and select birth pad
  108.     void die(int killer,vector& hitpos,int padindx);
  109.  
  110.     inline bsp_object *clone()
  111.     { 
  112.         person *p=new person;
  113.         *p=*this;
  114.         p->source=this;
  115.         return p;
  116.     }
  117. };
  118.  
  119. class jump_pad : public bsp_object
  120. {
  121. public:
  122.     mesh *objmesh;
  123.     float jumpforce;
  124.     int forcetime,invert;
  125.  
  126.     jump_pad()
  127.     { type=TYPE_JUMP_PAD; };
  128.  
  129.     int get_custom_param_desc(int i,param_desc *pd);
  130.     mesh *get_mesh() { return objmesh; };
  131.     void init();
  132.     int step(int dt) { return 0; };
  133.     inline bsp_object *clone()
  134.     { 
  135.         jump_pad *j=new jump_pad;
  136.         *j=*this;
  137.         j->source=this;
  138.         return j;
  139.     }
  140. };
  141.  
  142. class birth_pad : public bsp_object
  143. {
  144. public:
  145.     mesh *objmesh;
  146.     mesh *animobj;
  147.     int animtime;
  148.     
  149.     int animtime0;
  150.     vector dynlight;
  151.  
  152.     birth_pad()
  153.     { type=TYPE_BIRTH_PAD; dynlight.null(); };
  154.  
  155.     void init();
  156.     void draw();
  157.     int message(vector& p,float rad,int msg,int param,void *data);
  158.     int get_custom_param_desc(int i,param_desc *pd);
  159.     int step(int dt) { return 0; };
  160.     mesh *get_mesh() { return objmesh; };
  161.     inline bsp_object *clone()
  162.     { 
  163.         birth_pad *x=new birth_pad;
  164.         *x=*this;
  165.         x->source=this;
  166.         return x;
  167.     }
  168. };
  169.  
  170. class gib : public bsp_object
  171. {
  172. public:
  173.     mesh *objmesh;
  174.     hitmark *hm;
  175.     float gravity;
  176.     int fadetime;
  177.     int numbounces;
  178.     int traildelay;
  179.  
  180.     vector dynlight;
  181.     int lasttrail;
  182.  
  183.  
  184.     gib()
  185.     { type=TYPE_GIB; dynlight.null(); lasttrail=0; };
  186.  
  187.     void draw();
  188.     int step(int dt);
  189.     int message(vector& p,float rad,int msg,int param,void *data);
  190.     int get_custom_param_desc(int i,param_desc *pd);
  191.     
  192.     inline bsp_object *clone()
  193.     { 
  194.         gib *x=new gib;
  195.         *x=*this;
  196.         x->source=this;
  197.         return x;
  198.     }
  199. };
  200.  
  201. class person_desc : public class_desc
  202. {
  203. public:
  204.     void *create() { return new person; };
  205.     char *get_name() { return "person"; };
  206.     int get_type() { return TYPE_PERSON; };
  207. };
  208.  
  209. class jump_pad_desc : public class_desc
  210. {
  211. public:
  212.     void *create() { return new jump_pad; };
  213.     char *get_name() { return "jumppad"; };
  214.     int get_type() { return TYPE_JUMP_PAD; };
  215. };
  216.  
  217. class birth_pad_desc : public class_desc
  218. {
  219. public:
  220.     void *create() { return new birth_pad; };
  221.     char *get_name() { return "birthpad"; };
  222.     int get_type() { return TYPE_BIRTH_PAD; };
  223. };
  224.  
  225. class gib_desc : public class_desc
  226. {
  227. public:
  228.     void *create() { return new gib; };
  229.     char *get_name() { return "gib"; };
  230.     int get_type() { return TYPE_GIB; };
  231. };
  232.  
  233.